//
// Created by jaesonzhang on 2024/9/10.
//

#include <android/log.h>
#include "FontManager.h"


// 获取系统字体目录下的所有字体文件
std::vector<std::string> FontManager::getSystemFonts() {
  std::vector<std::string> fonts;
  const char *fontDir = "/system/fonts/";
  DIR *dir = opendir(fontDir);
  if (dir != nullptr) {
    struct dirent *entity;
    while ((entity = readdir(dir)) != nullptr) {
      if (entity->d_type == DT_REG) { // 仅处理常规文件
        fonts.push_back(std::string(fontDir) + entity->d_name);
      }
    }
    closedir(dir);
  }
  return fonts;
}

// 获取默认字体路径
std::string FontManager::getDefaultFontPath() {
  std::vector<std::string> fonts = getSystemFonts();

  // 选择一个默认字体（例如DroidSansFallback.ttf）
  // 选择一个默认字体（例如NotoSansCJK-Regular.ttc或DroidSansFallback.ttf）
  for (const std::string &font: fonts) {
//    __android_log_print(ANDROID_LOG_ERROR,
//                        "FontManager",
//                        "font name:%s",
//                        font.c_str());
    if (font.find("NotoSansCJK-Regular.ttc") != std::string::npos ||
        font.find("SourceSansPro-Regular.ttf") != std::string::npos) {
      return font;
    }
  }


  // 如果未找到DroidSansFallback.ttf，则返回第一个字体作为默认字体
  if (!fonts.empty()) {
    return fonts.front();
  }

  // 如果未找到任何字体文件，则返回空字符串
  return "";
}
